Debugging is a process of finding and extracting bugs, error and/or defects (hereinafter generally “bugs”), in a computer program, such as an application, thus making the application behave as expected by the application developer. Conventionally, developers have been primarily limited to debugging applications prior to those applications being distributed to end users for installation on an end user's mobile device, e.g., a smart phone, personal digital assistant (PDA), tablet computer, etc. With the growth of applications that may be provided to end users across the world (e.g., mobile applications), developers have limited ways of receiving information as to what may cause specific bugs in the applications, while the application is being utilized by the end user and executed on an end user's device.
One technique for collecting information relating to the state is to incorporate a set of analytics software into an application prior to it being released for use by end users. One such technique is described in U.S. patent application Ser. No. 13/323,166, entitled SYSTEM AND METHOD FOR DATA COLLECTION AND ANALYSIS OF INFORMATION RELATING TO MOBILE APPLICATIONS, by Wayne Chang et al., the contents of which are hereby incorporated by reference. However, even in known debugging systems that operate on applications designed for mobile use, state information relating to the state of the application and mobile devices the time of an error may not be properly obtained.
One common cause for improper state information being obtained is situations where an application has registered callback operation. As will be appreciated by those skilled in the art, a callback operation is a portion of executable software that is invoked at a later point in time after it has been set by a particular function. This later point in time may be after the calling function has returned program control to another function. For example the main( ) function of an application may invoke a function entitled doWork( ), which in turn, invokes the processEvent( ) callback function. If an error condition occurs during execution of the processEvent( ) callback, it is possible that information relating to the doWork( ) function may not be retained. This may occur because, for example, the doWork( ) function has returned and primary program control is within the main( ) function or some other function. In such a situation, conventional state information that may be retrieved by debugging software would typically include information relating to the processeEvent( ) function and the main( ) function or other function executing at the time of the error condition. However, there would typically be no information relating to the doWork( ) function. As such, a programmer may not focus on the doWork( ) function, even though it may be a likely cause of the error condition.